package com.racetime.service;

import com.racetime.po.Date;

import java.util.List;

/**
 * @author : Ice'Clean
 * @date : 2021-05-24
 *
 * 日程服务接口
 */
public interface DateService {

    /**
     * 获取指定用户的所有日程
     * @param userId 用户 id
     * @return 属于该用户的所有日程
     */
    List<Date> findDateByUserId(int userId);

    /**
     * 创建新日程
     * @param userId 创建者 id
     * @param dateName 新日程名称
     * @param dateContent 新日程内容
     * @param dateClass 新日程的分类
     * @param dateLevel 新日程重要程度
     * @param dateStart 新日程起始时间
     * @param dateEnd 新日程终止时间
     * @return 新日程对象
     */
    Date createNewDate(int userId, String dateName, String dateContent, String dateClass, int dateLevel, String dateStart, String dateEnd);

    /**
     * 更新日程
     * @param dateId 日程 id
     * @param dateName 日程的新名称
     * @param dateContent 日程的新内容
     * @param dateClass 新日程的分类
     * @param dateLevel 日程的新重要程度
     * @param dateStart 日程的新起始时间
     * @param dateEnd 日程的新终止时间
     * @return 是否更新成功
     */
    boolean updateDate(int dateId, String dateName, String dateContent, String dateClass, int dateLevel, String dateStart, String dateEnd, String dateFinish);

    /**
     * 判断要创建的日程是否和用户原有的日程冲突
     * @param userId 用户 id
     * @param startTime 日程开始时间
     * @param endTime 日程结束时间
     * @return 冲突返回 true，不冲突返回 false
     */
    boolean isTimeClash(int userId, String startTime, String endTime);

    /**
     * 获取指定用户当前需要完成的日程
     * @param userId 指定用户 id
     * @return 当前日程的实例对象
     */
    Date getCurrentDate(int userId);

    /**
     * 通过日程 id 删除日程
     * @param dateId 日程 id
     * @return 是否删除成功
     */
    boolean deleteDate(int dateId);
}
